
package com.ktgj.common.spring.entity.iata.iata_orderchangerq;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;


/**
 * <p>OrderItemType complex type的 Java 类。
 * 
 * <p>以下模式片段指定包含在此类中的预期内容。
 * 
 * <pre>
 * &lt;complexType name="OrderItemType"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="BilateralTimeLimit" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderChangeRQ}BilateralTimeLimitType" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="CreationDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="DepositTimeLimitDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="Disclosure" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderChangeRQ}DisclosureType" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="FareDetail" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderChangeRQ}FareDetailType" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="InventoryGuaranteeDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="InventoryGuaranteeID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *         &lt;element name="NamingTimeLimitDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="OrderInstruction" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderChangeRQ}OrderInstructionType" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="OrderItemID" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
 *         &lt;element name="OwnerCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *         &lt;element name="OwnerTypeCode" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderChangeRQ}OwnerTypeCodeContentType" minOccurs="0"/&gt;
 *         &lt;element name="PaymentTimeLimitDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="Penalty" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderChangeRQ}PenaltyType" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="PriceGuaranteeTimeLimitDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="Service" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderChangeRQ}ServiceType" maxOccurs="unbounded"/&gt;
 *         &lt;element name="StatusCode" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderChangeRQ}OrderItemStatusCodeContentType" minOccurs="0"/&gt;
 *         &lt;element name="TicketingTimeLimitDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="WebAddressURI" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *       &lt;/sequence&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "OrderItemType", propOrder = {
    "bilateralTimeLimit",
    "creationDateTime",
    "depositTimeLimitDateTime",
    "disclosure",
    "fareDetail",
    "inventoryGuaranteeDateTime",
    "inventoryGuaranteeID",
    "namingTimeLimitDateTime",
    "orderInstruction",
    "orderItemID",
    "ownerCode",
    "ownerTypeCode",
    "paymentTimeLimitDateTime",
    "penalty",
    "priceGuaranteeTimeLimitDateTime",
    "service",
    "statusCode",
    "ticketingTimeLimitDateTime",
    "webAddressURI"
})
public class OrderItemType {

    @XmlElement(name = "BilateralTimeLimit")
    protected List<BilateralTimeLimitType> bilateralTimeLimit;
    @XmlElement(name = "CreationDateTime")
    protected Object creationDateTime;
    @XmlElement(name = "DepositTimeLimitDateTime")
    protected Object depositTimeLimitDateTime;
    @XmlElement(name = "Disclosure")
    protected List<DisclosureType> disclosure;
    @XmlElement(name = "FareDetail")
    protected List<FareDetailType> fareDetail;
    @XmlElement(name = "InventoryGuaranteeDateTime")
    protected Object inventoryGuaranteeDateTime;
    @XmlElement(name = "InventoryGuaranteeID")
    protected String inventoryGuaranteeID;
    @XmlElement(name = "NamingTimeLimitDateTime")
    protected Object namingTimeLimitDateTime;
    @XmlElement(name = "OrderInstruction")
    protected List<OrderInstructionType> orderInstruction;
    @XmlElement(name = "OrderItemID", required = true)
    protected String orderItemID;
    @XmlElement(name = "OwnerCode")
    protected String ownerCode;
    @XmlElement(name = "OwnerTypeCode")
    @XmlSchemaType(name = "string")
    protected OwnerTypeCodeContentType ownerTypeCode;
    @XmlElement(name = "PaymentTimeLimitDateTime")
    protected Object paymentTimeLimitDateTime;
    @XmlElement(name = "Penalty")
    protected List<PenaltyType> penalty;
    @XmlElement(name = "PriceGuaranteeTimeLimitDateTime")
    protected Object priceGuaranteeTimeLimitDateTime;
    @XmlElement(name = "Service", required = true)
    protected List<ServiceType> service;
    @XmlElement(name = "StatusCode")
    @XmlSchemaType(name = "string")
    protected OrderItemStatusCodeContentType statusCode;
    @XmlElement(name = "TicketingTimeLimitDateTime")
    protected Object ticketingTimeLimitDateTime;
    @XmlElement(name = "WebAddressURI")
    protected String webAddressURI;

    /**
     * Gets the value of the bilateralTimeLimit property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the bilateralTimeLimit property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getBilateralTimeLimit().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link BilateralTimeLimitType }
     * 
     * 
     */
    public List<BilateralTimeLimitType> getBilateralTimeLimit() {
        if (bilateralTimeLimit == null) {
            bilateralTimeLimit = new ArrayList<BilateralTimeLimitType>();
        }
        return this.bilateralTimeLimit;
    }

    /**
     * 获取creationDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getCreationDateTime() {
        return creationDateTime;
    }

    /**
     * 设置creationDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setCreationDateTime(Object value) {
        this.creationDateTime = value;
    }

    /**
     * 获取depositTimeLimitDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getDepositTimeLimitDateTime() {
        return depositTimeLimitDateTime;
    }

    /**
     * 设置depositTimeLimitDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setDepositTimeLimitDateTime(Object value) {
        this.depositTimeLimitDateTime = value;
    }

    /**
     * Gets the value of the disclosure property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the disclosure property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getDisclosure().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link DisclosureType }
     * 
     * 
     */
    public List<DisclosureType> getDisclosure() {
        if (disclosure == null) {
            disclosure = new ArrayList<DisclosureType>();
        }
        return this.disclosure;
    }

    /**
     * Gets the value of the fareDetail property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the fareDetail property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getFareDetail().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link FareDetailType }
     * 
     * 
     */
    public List<FareDetailType> getFareDetail() {
        if (fareDetail == null) {
            fareDetail = new ArrayList<FareDetailType>();
        }
        return this.fareDetail;
    }

    /**
     * 获取inventoryGuaranteeDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getInventoryGuaranteeDateTime() {
        return inventoryGuaranteeDateTime;
    }

    /**
     * 设置inventoryGuaranteeDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setInventoryGuaranteeDateTime(Object value) {
        this.inventoryGuaranteeDateTime = value;
    }

    /**
     * 获取inventoryGuaranteeID属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getInventoryGuaranteeID() {
        return inventoryGuaranteeID;
    }

    /**
     * 设置inventoryGuaranteeID属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setInventoryGuaranteeID(String value) {
        this.inventoryGuaranteeID = value;
    }

    /**
     * 获取namingTimeLimitDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getNamingTimeLimitDateTime() {
        return namingTimeLimitDateTime;
    }

    /**
     * 设置namingTimeLimitDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setNamingTimeLimitDateTime(Object value) {
        this.namingTimeLimitDateTime = value;
    }

    /**
     * Gets the value of the orderInstruction property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the orderInstruction property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getOrderInstruction().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link OrderInstructionType }
     * 
     * 
     */
    public List<OrderInstructionType> getOrderInstruction() {
        if (orderInstruction == null) {
            orderInstruction = new ArrayList<OrderInstructionType>();
        }
        return this.orderInstruction;
    }

    /**
     * 获取orderItemID属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getOrderItemID() {
        return orderItemID;
    }

    /**
     * 设置orderItemID属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setOrderItemID(String value) {
        this.orderItemID = value;
    }

    /**
     * 获取ownerCode属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getOwnerCode() {
        return ownerCode;
    }

    /**
     * 设置ownerCode属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setOwnerCode(String value) {
        this.ownerCode = value;
    }

    /**
     * 获取ownerTypeCode属性的值。
     * 
     * @return
     *     possible object is
     *     {@link OwnerTypeCodeContentType }
     *     
     */
    public OwnerTypeCodeContentType getOwnerTypeCode() {
        return ownerTypeCode;
    }

    /**
     * 设置ownerTypeCode属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link OwnerTypeCodeContentType }
     *     
     */
    public void setOwnerTypeCode(OwnerTypeCodeContentType value) {
        this.ownerTypeCode = value;
    }

    /**
     * 获取paymentTimeLimitDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getPaymentTimeLimitDateTime() {
        return paymentTimeLimitDateTime;
    }

    /**
     * 设置paymentTimeLimitDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setPaymentTimeLimitDateTime(Object value) {
        this.paymentTimeLimitDateTime = value;
    }

    /**
     * Gets the value of the penalty property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the penalty property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getPenalty().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link PenaltyType }
     * 
     * 
     */
    public List<PenaltyType> getPenalty() {
        if (penalty == null) {
            penalty = new ArrayList<PenaltyType>();
        }
        return this.penalty;
    }

    /**
     * 获取priceGuaranteeTimeLimitDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getPriceGuaranteeTimeLimitDateTime() {
        return priceGuaranteeTimeLimitDateTime;
    }

    /**
     * 设置priceGuaranteeTimeLimitDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setPriceGuaranteeTimeLimitDateTime(Object value) {
        this.priceGuaranteeTimeLimitDateTime = value;
    }

    /**
     * Gets the value of the service property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the service property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getService().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link ServiceType }
     * 
     * 
     */
    public List<ServiceType> getService() {
        if (service == null) {
            service = new ArrayList<ServiceType>();
        }
        return this.service;
    }

    /**
     * 获取statusCode属性的值。
     * 
     * @return
     *     possible object is
     *     {@link OrderItemStatusCodeContentType }
     *     
     */
    public OrderItemStatusCodeContentType getStatusCode() {
        return statusCode;
    }

    /**
     * 设置statusCode属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link OrderItemStatusCodeContentType }
     *     
     */
    public void setStatusCode(OrderItemStatusCodeContentType value) {
        this.statusCode = value;
    }

    /**
     * 获取ticketingTimeLimitDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getTicketingTimeLimitDateTime() {
        return ticketingTimeLimitDateTime;
    }

    /**
     * 设置ticketingTimeLimitDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setTicketingTimeLimitDateTime(Object value) {
        this.ticketingTimeLimitDateTime = value;
    }

    /**
     * 获取webAddressURI属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getWebAddressURI() {
        return webAddressURI;
    }

    /**
     * 设置webAddressURI属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setWebAddressURI(String value) {
        this.webAddressURI = value;
    }

}
